//
//  ILFMDBBridge.h
//  IMIHome
//
//  Created by
//  Copyright © 2023 上海创米科技有限公司. All rights reserved.
//  
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
#pragma mark -  专门供Swift桥接,非桥接代码不要在此类实现

@interface ILFMDBBridge : NSObject
/**
 线程安全
 */
+ (void)jq_inDatabase:(void(^)(void))block;

/**
 创建表 通过传入的model或dictionary(如果是字典注意类型要写对),虽然都可以不过还是推荐以下都用model

 @param tableName 表的名称
 @param parameters 设置表的字段,可以传model(runtime自动生成字段)或字典(格式:@{@"name":@"TEXT"})
 @return 是否创建成功
 */
+ (BOOL)jq_createTable:(NSString *)tableName dicOrModel:(id)parameters;
/**
 增加: 向表中插入数据

 @param tableName 表的名称
 @param parameters 要插入的数据,可以是model或dictionary(格式:@{@"name":@"小李"})
 @return 是否插入成功
 */
+ (BOOL)jq_insertTable:(NSString *)tableName dicOrModel:(id)parameters;
/**
 批量插入或更改

 @param dicOrModelArray 要insert/update数据的数组,也可以将model和dictionary混合装入array
 @return 返回的数组存储未插入成功的下标,数组中元素类型为NSNumber
 */
+ (NSArray *)jq_insertTable:(NSString *)tableName dicOrModelArray:(NSArray *)dicOrModelArray;
/**
 删除: 根据条件删除表中数据

 @param tableName 表的名称
 @param format 条件语句, 如:@"where name = '小李'"
 @return 是否删除成功
 */
+ (BOOL)jq_deleteTable:(NSString *)tableName withFormat:(NSString *)format key:(NSString *)key;
/**
 更改: 根据条件更改表中数据

 @param tableName 表的名称
 @param parameters 要更改的数据,可以是model或dictionary(格式:@{@"name":@"张三"})
 @param format 条件语句, 如:@"where name = '小李'"  format = name   key = 小李
 @return 是否更改成功
 */
+ (BOOL)jq_updateTable:(NSString *)tableName dicOrModel:(id)parameters withFormat:(NSString *)format key:(NSString *)key;
/**
 查找: 根据条件查找表中数据

 @param tableName 表的名称
 @param parameters 每条查找结果放入model(可以是[Person class] or @"Person" or Person实例)或dictionary中
 @return 将结果存入array,数组中的元素的类型为parameters的类型
 */
+ (NSArray *)jq_lookupTable:(NSString *)tableName dicOrModel:(id)parameters;
/**
 查找: 根据条件查找表中数据

 @param tableName 表的名称
 @param parameters 每条查找结果放入model(可以是[Person class] or @"Person" or Person实例)或dictionary中
 @param format 条件语句, 如:@"where name = '小李'"  format = name   key = 小李
 @return 是否更改成功
 */
+ (NSArray *)jq_lookupTable:(NSString *)tableName dicOrModel:(id)parameters withFormat:(NSString *)format key:(NSString *)key;
// `删除表
+ (BOOL)jq_deleteTable:(NSString *)tableName;
// `清空表
+ (BOOL)jq_deleteAllDataFromTable:(NSString *)tableName;
// `是否存在表
+ (BOOL)jq_isExistTable:(NSString *)tableName;
// `表中共有多少条数据
+ (int)jq_tableItemCount:(NSString *)tableName;
@end

NS_ASSUME_NONNULL_END
